package com.fyh.hiring.company.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.fyh.hiring.common.DBObject;
import com.fyh.hiring.common.util.JDBCUtil;
import com.fyh.hiring.company.entity.PositionEntity;

/**
 * Dao层：返回的往往都是集合，因为dao层是做数据库查询，查询完毕之后，他会把数据放到实体里面<br/>
 * 然后实体在放到集合，这样前台就可以遍历集合
 * 
 * @author 付元辉.
 *
 * @since2016年2月27日
 */
public class PositionDao {

	public List<PositionEntity> showPosition() throws SQLException {

		List<PositionEntity> positionList = new ArrayList<>();
		PositionEntity position = null;
		// String sql =
		// "SELECT c.`name` AS companyName,c.address,c.slogan,p.`name` AS positionName ,p.salary1,p.salary2,p.release_time FROM position p,company c WHERE p.company_id = c.id;";

		// 由于sql过长，这里有一个小技巧，把这个语句分开放入StringBuffer里面
		StringBuffer sb = new StringBuffer();
		sb.append("SELECT c.`name` AS company_name,c.address,c.slogan,p.`name` AS position_name ,p.salary1,p.salary2,p.release_time ");
		sb.append("FROM position p,company c ");
		sb.append("WHERE p.company_id = c.id");
		DBObject dbObject = null;
		try {
			dbObject = JDBCUtil.executeQuery(sb.toString());
			ResultSet resultSet = dbObject.getResultSet();
			while (resultSet.next()) {
				/**
				 * 这里的意思:为公司名称这个属性设置值，这个值在哪里呢？这个值就是我们在数据库查询出来的
				 */
				position = new PositionEntity();
				position.setCompanyName(resultSet.getString("company_name"));
				position.setCompanyAdress(resultSet.getString("address"));
				position.setcompanySlogan(resultSet.getString("slogan"));
				position.setName(resultSet.getString("position_name"));
				position.setSalary1(resultSet.getInt("salary1"));
				position.setSalary2(resultSet.getInt("salary2"));
				position.setReleaseTime(resultSet.getTimestamp("release_time"));

				// 最后在吧这个实体放入集合里面返回出去
				positionList.add(position);

			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			JDBCUtil.close(dbObject);
		}
		return positionList;

	}
}
